<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
    <title>Cygwin/X - Development - XWin Server</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" type="text/css" href="../../cygx.css" />
    <link rel="icon" type="image/ico" href="../../favicon.ico" />
    <meta name="keywords" content="Cygwin, X, x window system, xserver, x-server, Cygwin/X, shadow, shadowfb, fb" />
    <meta name="description" content="Cygwin/X - Development - XWin Server" />
</head>

<body>
    <!--#include virtual="../../cygx-header.html" -->

    <h1>Development - XWin Server</h1>

    <p>Contributions to the XWin Server are more than welcome.</p>

    <h2>Source Code from Cygwin's setup.exe</h2>

    <p>Use Cygwin's setup.exe to install the xorg-server package,
    and select the 'src' checkbox to install the source code.
    This source code is the upstream X.Org source code with multiple patches applied,
    and is known to build and function on Cygwin, so this should
    be the starting point for those wishing to work with the source code.</p>

    <h2>Source Code</h2>

    <p>See the Cygwin/X <a href="../../docs/cg/">Contributor's
    Guide</a> for information on obtaining the Cygwin/X server source code
    and also compilation tutorials, compilation tips, expected build times,
    overviews of the technologies involved, and a full bibliography.</p>

    <h2>Getting Started</h2>

    <ul>
        <li>
        <a href="http://cgit.freedesktop.org/xorg/xserver/tree/">
        View the XWin Server code</a> in the X.org git tree
        under <a href="http://cgit.freedesktop.org/xorg/xserver/tree/hw/xwin">hw/xwin/</a></li>

        <li>Install Cygwin and Cygwin/X using Cygwin's setup.exe.
        The <a href="../../docs/ug/">Cygwin/X User's Guide</a> may
        be helpful.</li>

        <li>Get and build the latest X.org source tree, using the
        instructions above.</li>

        <li>You're going to need an editor that is capable of
        handling UNIX-style end-of-line characters on a Windows
        machine.  Any of the editors available via Cygwin's setup.exe
	should do this, for example
        <a href="http://www.gnu.org/software/emacs/">emacs</a>
        and <a href="http://nedit.org/">nedit</a>.</li>

        <li>Refer to
        <a href="http://www.x.org/releases/X11R7.5/doc/core/Xserver-spec.pdf"
        type="application/pdf">Definition of the Porting Layer
        for X v11 Sample Server</a> for an overview of the structure of
	the X server code and the DIX/DDX separation.</li>

        <li>Refer to
        <a href="http://www.x.org/releases/X11R7.5/doc/index.html">
	X.Org developer documentation and X11 protocol specifications</a>
	(Various versions of this have been published in book form).
	</li>

	<li>Refer to
	<a href="http://www.x.org/docs/ICCCM/icccm.pdf">ICCCM</a> and
	<a href="http://standards.freedesktop.org/wm-spec/wm-spec-latest.html">EWMH</a>
	specifications for details of client-client interactions used
	by window managers and other desktop environment utilities.
	</li>

        <li>Refer to <a href="http://msdn.microsoft.com/">MSDN Library
        Online</a> for documentation on Windows native APIs used
        e.g. DirectDraw, etc.</li>

        <li>Read the
        <a href="http://cygwin.com/ml/cygwin/">cygwin mailing list</a> and post
        your contributions.</li>
    </ul>

    <!--#include virtual="../../cygx-footer.html" -->
    </body>
</html>
